package main

import "fmt"

//函数类型：一种特殊的类型，它表示着所有拥有同样的入参类型和返回值类型的函数集合。

//定义了一个名为 Greeting的函数类型。
type Greeting func(string) string

//给Greeting类型添加方法
func (g Greeting) say(n string) {
	fmt.Println("I want to say:")
	//这里有点绕，g 代表这个函数自身，在执行say时，先执行函数自身。也就是 g(n)，将得到一个字符串，即：hello:xxx
	fmt.Println(g(n))
}

func english(name string) string {
	return "hello:" + name
}

func main() {
	english("Lili") //没有输出，只因这个函数只会返回一个字符串，并没有输出。
	//因为english的函数类型，满足Greeting。即都只接受和返回一个字符串。所以就可以通过如下方式，将english函数，转换成Greeting类型
	greet := Greeting(english)
	greet.say("666")

}
